Computing devices, such as personal computers, servers, mainframes, etc., often utilize hardware manipulation to optimize performance. For instance, a major area of optimization is power consumption; modern computing devices may reduce power consumption when power is not needed, such as when a hardware component of a device is idle or not being fully utilized. A particular component may be turned off or placed in a low-power state until the component is needed. In computing devices, this manipulation of the component may be performed using hardware, software, or a combination thereof.
One conventional method of hardware manipulation is the Advanced Configuration and Power Interface (“ACPI”) specification, which specifies interfaces through which hardware may be recognized, configured and managed. As would be known to those skilled in the art, ACPI enables an operating system (“OS”) of a computing device to manipulate the hardware directly—a function which, under the preceding Advanced Power Management (“APM”) specification, was relegated entirely to a Basic Input/Output System (“BIOS”) of the computing device. As a result, the OS can perform complex manipulations needed to optimize the hardware. In addition, ACPI enables the OS to automatically adjust to different hardware configurations. ACPI also provides a layer of abstraction—the “ACPI Machine Language” or “AML”—that allows the OS to manipulate hardware without the use of unique driver programs. This makes the OS compatible with computing devices that include varying hardware configurations and allows the OS to be developed independently of the hardware and vice-versa. A device which complies with the ACPI specification provides a set of “ACPI tables,” which contain “control methods” expressed in AML. In order to process these control methods, the OS conventionally incorporates an “AML interpreter.”
In spite of its advantages over the APM standard, ACPI does have certain limitations. One prominent example is the amount of resources required to operate the AML interpreter. In general, an OS must be able to run on any of a large variety of computing devices, which are not all of a single configuration. Because it must describe such a broad variety of hardware, AML is a very generic language and its interpreter is a large and complex program, requiring a substantial amount of memory to execute. The required memory is often obtained at the expense of runtime memory that could have otherwise been utilized for other programs. Thus, executing the AML interpreter can impede device performance.